package rxjava;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;

/**
 * 创建时间：2018年03月06日16:45 <br>
 * 作者：fuchaoyang <br>
 * 描述：
 */

public class TestRxJava extends Activity {
  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // 通俗的讲就是
    // 1.create的时候，创建实体类Observable，持有OnSubscribe（call方法）的引用
    // 2.subscribe进行订阅时，传入Subscriber，执行OnSubscribe的call方法，在call里调用subscriber的方法。
    Observable.create(new Observable.OnSubscribe<Integer>() {
      @Override public void call(Subscriber<? super Integer> subscriber) {
        for (int i = 0; i < 10; i++) {
          subscriber.onNext(i);
        }
      }
    })
      // 其实操作符就是 再创建一个 Observable，订阅的时候调用，
      // 被订阅时在OnSubscribe的call方法里执行上一个Observable的subscribe方法
      // 上一个的onNext方法中执行subscriber.onNext(transformer.call(var1));将transform之后的结果传给上一次的，执行onNext方法
      .map(new Observable.Transformer<Integer, Integer>() {
        @Override public Integer call(Integer from) {
          return from % 2;
        }
      }).subscribe(new Subscriber<Integer>() {
      @Override public void onCompleted() {

      }

      @Override public void onError(Throwable t) {

      }

      @Override public void onNext(Integer var1) {
        System.out.println(var1);
      }
    });
  }
}
